package com.lzy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lzy.entity.PageDomain;
import com.lzy.entity.SysUserEntity;
import com.lzy.security.LoginUser;

import java.util.List;
import java.util.Map;

/**
 * 用户信息表
 *
 * @author lyw
 * @email lyw@gmail.com
 * @date 2023-02-02 17:06:20
 */
public interface ISysUserService extends IService<SysUserEntity> {

  /**
   * 批量删除用户信息
   * @param userIds 需要删除的用户ID
   */
  void removeUserInfo(List<Long> userIds);

  LoginUser selectUserInfoById(Long userId);

  /**
   * 检查用户是否存在
   * @param userName 用户名
   * @return  结果
   */
  boolean checkUserWhetherExists(String userName);

  /**
   * 检查手机号是否存在
   * @param phonenumber 手机号
   * @return 结果
   */
  boolean checkUserPhoneWhetherExists(String phonenumber);

  /**
   * 检查邮箱是否存在
   * @param email 邮箱
   * @return 结果
   */
  boolean checkUserEmailWhetherExists(String email);

  /**
   * 添加系统用户
   * @param sysUser 用户
   */
  void registerSysUser(SysUserEntity sysUser);

  /**
   * 管理员添加用户
   * @param sysUser 添加用户
   */
  void addSysUser(SysUserEntity sysUser);

  /**
   * 更新用户信息
   * @param sysUser 用户
   */
  void updateUserInfo(SysUserEntity sysUser);

  /**
   * 重置用户密码
   * @param user 用户
   */
  void resetPwd(SysUserEntity user);

  /**
   * 更新用户状态
   * @param user 用户
   */
  void updateUserStatus(SysUserEntity user);

  /**
   * 获取用户角色信息
   * @param userId 用户id
   * @return 结果
   */
  List<String> getRolesByUserId(Long userId);

  /**
   * 分配用户角色信息
   * @param userId  用户id
   * @param roleIds  角色组
   */
  void insertUserAuth(Long userId, Long... roleIds);

  /**
   * 修改用户密码
   * @param originPwd 原密码
   * @param password 新密码
   */
  void changeUserPwd(String originPwd, String password);

//  IPage<Map<String, Object>> selectPageListByConditional(SysUserEntity sysUserEntity);
  IPage<Map<String, Object>> selectPageListByConditional(SysUserEntity sysUserEntity);
}

